package service

import (
	"gitee.com/zaper/kafka-service/service/health"
	metamgr "gitee.com/zaper/kafka-service/service/metadata"
	"gitee.com/zaper/kafka-service/service/metadata/model"
	"gitee.com/zaper/service-config/constant"
	"gitee.com/zaper/service-config/service/notify_all"
	"gitee.com/zaper/service-config/service/service_config"
)

func InitializeConfig() {
	health.CheckReady()
	initializeTopic()
	go notify_all.AllConfigNotifySchedule()
	go service_config.WatchChangeWork()
}

func initializeTopic() {
	topicModel := &model.TopicModel{
		TopName:         constant.ConfigSubKafkaTop,
		NumPartition:    9,
		NumReplications: 3,
		// 配置日志压缩规则，制定配置中心的额消息是要压缩的，300一次。
		// kafka发送消息后，如果因为某些服务异常下线，在此上线后会处理大量的积压消息(服务启动后会主动拉去全量配置，无需担心过时消息)
		// 压缩保证kafka发送的消息不会积压，未被压缩的key
		// 触发压缩的时候，只会保留最后一次key。
		// windows环境kafka兼容问题压缩时候路径权限无法达到预期退出，当前屏蔽此参数
		//CfgEntry: []kafka.ConfigEntry{
		//	{"cleanup.policy", "compact"},
		//	{"min.compaction.lag.ms", "3000"},
		//	{"segment.bytes", "1048576"},
		//},
	}
	metamgr.GetMetadataManager().CreateTopic(topicModel)
}
